#=============================================================================
# Kitware Information Macro Library
# Copyright 2010-2011 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================

set(test_defs KWIML_NAMESPACE=${KWIML})

# Tell CMake how to follow dependencies of sources in this directory.
set_property(DIRECTORY
  PROPERTY IMPLICIT_DEPENDS_INCLUDE_TRANSFORM
  "KWIML_HEADER(%)=<${KWIML}/%>"
  )

# Suppress printf/scanf format warnings; we test if the sizes match.
foreach(lang C CXX)
  if(KWIML_LANGUAGE_${lang} AND "${CMAKE_${lang}_COMPILER_ID}" STREQUAL GNU)
    set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wno-format")
  endif()
endforeach()

if(KWIML_LANGUAGE_C)
  set(test_srcs test.c)
else()
  set(test_srcs test.cxx)
endif()
if(KWIML_LANGUAGE_C)
  list(APPEND test_defs KWIML_LANGUAGE_C)
  list(APPEND test_srcs
    test_ABI_C.c
    test_INT_C.c
    test_include_C.c
    )
endif()
if(KWIML_LANGUAGE_CXX)
  list(APPEND test_defs KWIML_LANGUAGE_CXX)
  list(APPEND test_srcs
    test_ABI_CXX.cxx
    test_INT_CXX.cxx
    test_include_CXX.cxx
    )
endif()

foreach(th test_ABI_endian test_INT_format)
  configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${th}.h.in
                 ${CMAKE_CURRENT_BINARY_DIR}/${th}.h @ONLY)
endforeach()
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
add_executable(${KWIML}_test ${test_srcs})
set_property(TARGET ${KWIML}_test PROPERTY COMPILE_DEFINITIONS ${test_defs})
set_property(TARGET ${KWIML}_test PROPERTY
  RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
add_test(${KWIML}.test ${CMAKE_CURRENT_BINARY_DIR}/${KWIML}_test)
set_property(TEST ${KWIML}.test PROPERTY LABELS ${KWIML_LABELS_TEST})

# Xcode 2.x forgets to create the output directory before linking
# the individual architectures.
if(CMAKE_OSX_ARCHITECTURES AND XCODE
    AND NOT "${XCODE_VERSION}" MATCHES "^[^12]")
  add_custom_command(
    TARGET ${KWIML}_test
    PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_CFG_INTDIR}"
    )
endif()
